Skip to content

facet1#400

Merged
ignatandrei merged 3 commits into
mainfrom
Facet
Sep 16, 2025
Merged

facet1#400
ignatandrei merged 3 commits into
mainfrom
Facet

Conversation

@ignatandrei
Copy link
Copy Markdown
Owner

@ignatandrei ignatandrei commented Sep 16, 2025

Summary by CodeRabbit

  • New Features

    • Added Facet (RSCG Add LinqGen.Generator example #229) with a complete example: demo project, CodeTour, video script, and static example page.
    • Integrated Facet into the site: new docs page, list entry, and pandoc build inclusion.
  • Documentation

    • Updated counts and dates across README and site (228 → 229).
    • Reordered Mapper category to include Facet; added links and Mermaid graph node.
    • Expanded Facet documentation with usage, examples, and assets; removed it from “NoExamples”.
  • Chores

    • Added Facet to datasets (GeneratorDataRec.json, site exports).
    • Removed obsolete NoExample entry.

Copilot AI review requested due to automatic review settings September 16, 2025 16:10
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Sep 16, 2025

Walkthrough

Adds a new “Facet” example (RSCG #229) across data, docs, and site. Updates counts/dates, inserts Facet into catalogs and categories, removes it from “NoExamples,” and includes a complete sample project (mapperDemo) with code, tour, and docs. Build config and export datasets are updated to include the new page/item.

Changes

Cohort / File(s) Summary
Catalog counts and dates
README.md, later.md, v2/book/list.html, v2/rscg_examples_site/docs/indexRSCG.md, v2/rscg_examples_site/src/components/HomepageFeatures/index.js, v2/rscg_examples_site/docs/about.md
Increment RSCG total to 229; update dates; insert Facet row/entry; adjust display texts and headers.
Facet example documentation pages
v2/book/examples/Facet.html, v2/rscg_examples_site/docs/RSCG-Examples/Facet.md
Add standalone Facet example pages with info, usage, generated-files gallery, and detailed guide.
Categories and listings
v2/rscg_examples_site/docs/Categories/Mapper.md, v2/rscg_examples_site/docs/Categories/_PrimitiveMapper.mdx, v2/rscg_examples_site/docs/RSCG-Examples/index.md, v2/rscg_examples_site/docs/NoExamples.md
Insert Facet into Mapper category; reorder items; update example counts; remove Facet from NoExamples and renumber.
Data additions/removals
v2/RSCGExamplesData/GeneratorDataRec.json, v2/RSCGExamplesData/NoExample.json, v2/rscg_examples_site/static/exports/RSCG.json
Add Facet generator record and site export entry; remove prior “NoExample” Facet entry.
Build/config
v2/book/pandocHTML.yaml
Include examples/Facet.html in Pandoc input-files.
Facet example assets and project
v2/rscg_examples/Facet/description.json, v2/rscg_examples/Facet/nuget.txt, v2/rscg_examples/Facet/readme.txt, v2/rscg_examples/Facet/video.json, v2/rscg_examples/Facet/src/.tours/Facet.tour, v2/rscg_examples/Facet/src/mapperDemo.sln, v2/rscg_examples/Facet/src/mapperDemo/...
Add full example: VS solution, csproj (net8.0 + Facet 2.7.0), sample classes (Person, PersonDTO with [Facet]), Program.cs, CodeTour, and supporting texts.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Dev as Developer
  participant CS as C# Compiler
  participant FacetSG as Facet Source Generator
  participant Gen as Generated Mapping Code
  participant App as mapperDemo (Program)

  Dev->>CS: Build mapperDemo.csproj (Facet package)
  CS->>FacetSG: Analyze attributes (Facet on PersonDTO)
  FacetSG-->>CS: Emit generated DTO/mapping code
  CS-->>Dev: Build succeeds (GX outputs)

  Dev->>App: Run
  App->>Gen: new PersonDTO(person)
  Gen-->>App: Mapped DTO (FullName available)
  App-->>Dev: Console.WriteLine(dto.FullName)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

I thump with joy—two-twenty-nine!
A Facet shines, projections fine.
From Person to DTO we go,
With whiskers twitching—watch it flow.
New pages sprout, the lists realign,
I nibble docs—release time! 🥕✨

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title Check ❓ Inconclusive The title "facet1" contains the word "Facet" which relates to the main addition in the changeset (the Facet example and docs), but it is overly terse, not a clear sentence, and the trailing "1" is ambiguous so it does not communicate the PR's intent or scope to reviewers. Please rename the PR to a concise, descriptive title that summarizes the primary change, for example: "Add Facet example and documentation (RSCG #229)" or "Add Facet sample, docs, and site updates", so reviewers can immediately understand the purpose.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch Facet

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
  pre_merge_checks:
    custom_checks:
      - name: "Undocumented Breaking Changes"
        mode: "warning"
        instructions: |
          Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ignatandrei ignatandrei self-assigned this Sep 16, 2025
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds "Facet", a new Roslyn Source Code Generator (RSCG) example to the documentation. Facet is a C# source generator that creates lightweight projections (DTOs, API models) from domain models with minimal boilerplate code.

  • Updates the site to show 229 total examples (up from 228)
  • Adds Facet as the newest example in the Mapper category
  • Includes complete documentation with usage examples and generated code samples

Reviewed Changes

Copilot reviewed 27 out of 29 changed files in this pull request and generated no comments.

Show a summary per file
File Description
RSCG.json Added Facet entry to the main data file
HomepageFeatures/index.js Updated total count from 228 to 229 examples
indexRSCG.md Updated counts and added Facet to the chronological list
about.md Updated total count reference
RSCG-Examples/index.md Added Facet to mapper category and flowchart
RSCG-Examples/Facet.md Complete documentation page for Facet
NoExamples.md Removed Facet from the "no examples" list
_PrimitiveMapper.mdx Added Facet to mapper category listing
Mapper.md Added Facet to mapper category page

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (24)
v2/rscg_examples_site/src/components/HomepageFeatures/index.js (1)

7-7: Avoid hard-coding the example count; derive it from exported data to prevent drift.

Apply:

+const examplesCount = require('@site/static/exports/RSCG.json').All.length;
 const FeatureList = [
   {
-    title: '229 Examples (14 from MSFT)',
+    title: `${examplesCount} Examples (14 from MSFT)`,
v2/rscg_examples/Facet/nuget.txt (1)

1-1: Add a trailing newline for POSIX/text tooling hygiene.

-Generate lean DTOs, slim views, or faceted projections of your models with a single attribute.
+Generate lean DTOs, slim views, or faceted projections of your models with a single attribute.
+
v2/rscg_examples/Facet/src/mapperDemo/mapperDemo.csproj (1)

11-13: Use forward slash in paths for better cross‑platform compatibility.

-    <CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
+    <CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)/GX</CompilerGeneratedFilesOutputPath>
v2/rscg_examples_site/docs/NoExamples.md (2)

357-365: Fix markdownlint MD034: wrap bare URLs in angle brackets (repeat for changed lines).

-88)https://github.com/wieslawsoltes/ReactiveGenerator https://github.com/wieslawsoltes/ReactiveGenerator  
+88)<https://github.com/wieslawsoltes/ReactiveGenerator> <https://github.com/wieslawsoltes/ReactiveGenerator>  

Tip: apply the same pattern to other updated lines (361, 365, …) flagged by MD034.


357-705: Manual numbering is brittle; prefer Markdown auto-numbering.

Use “1.” for each list item so renumbering after removals is automatic.

v2/rscg_examples/Facet/src/mapperDemo.sln (1)

6-7: Optional: use the SDK-style C# project type GUID.

-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mapperDemo", "mapperDemo\mapperDemo.csproj", "{184A6543-E3EE-4397-B830-A165D7978DB3}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "mapperDemo", "mapperDemo\mapperDemo.csproj", "{184A6543-E3EE-4397-B830-A165D7978DB3}"

Harmless either way; this aligns with modern SDK projects.

v2/rscg_examples/Facet/description.json (1)

15-16: Use empty arrays instead of arrays with empty strings

Empty-string entries are noisy and may confuse consumers that expect file/dir paths.

Apply this diff:

-      "excludeDirectoryGenerated":[""],
-      "includeAdditionalFiles":[""]
+      "excludeDirectoryGenerated":[],
+      "includeAdditionalFiles":[]
v2/rscg_examples/Facet/src/.tours/Facet.tour (1)

15-16: Replace non-matching “pattern” with a stable locator

"this is the code" likely won’t match and breaks step focus. Use a line anchor for robustness.

Apply this diff:

-        "description": "File PersonDTO.cs  ",
-        "pattern": "this is the code"
+        "description": "File PersonDTO.cs  ",
+        "line": 1
@@
-        "description": "File Person.cs  ",
-        "pattern": "this is the code"
+        "description": "File Person.cs  ",
+        "line": 1
@@
-        "description": "File Program.cs \r\n>> dotnet run --project mapperDemo/mapperDemo.csproj ",
-        "pattern": "this is the code"
+        "description": "File Program.cs \r\n>> dotnet run --project mapperDemo/mapperDemo.csproj ",
+        "line": 1

Also applies to: 21-23, 27-29

v2/rscg_examples/Facet/readme.txt (1)

227-228: Fix attribute syntax in snippet

Missing closing ) makes the example invalid.

Apply this diff:

-[Facet(typeof(User)]
+[Facet(typeof(User))]
later.md (1)

89-131: Avoid bare URLs (MD034) — wrap or remove duplicates

Each line repeats the same URL; either remove the duplicate or wrap it in angle brackets.

Apply this diff (wrap duplicates):

-14) [Maui.BindableProperty.Generator]( https://github.com/rrmanzano/maui-bindableproperty-generator) , https://github.com/rrmanzano/maui-bindableproperty-generator 
+14) [Maui.BindableProperty.Generator]( https://github.com/rrmanzano/maui-bindableproperty-generator) , <https://github.com/rrmanzano/maui-bindableproperty-generator> 
@@
-15) [Minerals.AutoCQRS]( https://github.com/SzymonHalucha/Minerals.AutoCQRS) , https://github.com/SzymonHalucha/Minerals.AutoCQRS 
+15) [Minerals.AutoCQRS]( https://github.com/SzymonHalucha/Minerals.AutoCQRS) , <https://github.com/SzymonHalucha/Minerals.AutoCQRS> 
@@
-16) [Minerals.AutoDomain]( https://github.com/SzymonHalucha/Minerals.AutoDomain) , https://github.com/SzymonHalucha/Minerals.AutoDomain 
+16) [Minerals.AutoDomain]( https://github.com/SzymonHalucha/Minerals.AutoDomain) , <https://github.com/SzymonHalucha/Minerals.AutoDomain> 
@@
-17) [observable]( https://github.com/notanaverageman/Bindables) , https://github.com/notanaverageman/Bindables 
+17) [observable]( https://github.com/notanaverageman/Bindables) , <https://github.com/notanaverageman/Bindables> 
@@
-18) [RazorGen]( https://github.com/dartk/RazorGen) , https://github.com/dartk/RazorGen 
+18) [RazorGen]( https://github.com/dartk/RazorGen) , <https://github.com/dartk/RazorGen> 
@@
-19) [SourceCrafter.HttpServiceClientGenerator]( https://github.com/pedro-gilmora/SourceCrafter.HttpServiceClientGenerator/) , https://github.com/pedro-gilmora/SourceCrafter.HttpServiceClientGenerator/ 
+19) [SourceCrafter.HttpServiceClientGenerator]( https://github.com/pedro-gilmora/SourceCrafter.HttpServiceClientGenerator/) , <https://github.com/pedro-gilmora/SourceCrafter.HttpServiceClientGenerator/> 
@@
-20) [ST.NSwag.ServerSourceGenerator]( https://github.com/s-tarasov/ST.NSwag.ServerSourceGenerator) , https://github.com/s-tarasov/ST.NSwag.ServerSourceGenerator 
+20) [ST.NSwag.ServerSourceGenerator]( https://github.com/s-tarasov/ST.NSwag.ServerSourceGenerator) , <https://github.com/s-tarasov/ST.NSwag.ServerSourceGenerator> 
@@
-21) [StrongInject]( https://github.com/YairHalberstadt/stronginject/) , https://github.com/YairHalberstadt/stronginject/ 
+21) [StrongInject]( https://github.com/YairHalberstadt/stronginject/) , <https://github.com/YairHalberstadt/stronginject/> 
v2/book/examples/Facet.html (3)

5-11: Add rel="noopener noreferrer" to external links opened in a new tab.

Prevents reverse‑tabnabbing and is a standard security best practice for target="_blank".

-Nuget : <a href="https://www.nuget.org/packages/Facet/" target="_blank">https://www.nuget.org/packages/Facet/</a>
+NuGet: <a href="https://www.nuget.org/packages/Facet/" target="_blank" rel="noopener noreferrer">https://www.nuget.org/packages/Facet/</a>

-<p>You can find more details at : <a href="https://github.com/Tim-Maes/Facet/" target="_blank"> https://github.com/Tim-Maes/Facet/</a></p>
+<p>You can find more details at: <a href="https://github.com/Tim-Maes/Facet/" target="_blank" rel="noopener noreferrer"> https://github.com/Tim-Maes/Facet/</a></p>

-<p>Source: <a href="https://github.com/Tim-Maes/Facet/" target="_blank">https://github.com/Tim-Maes/Facet/</a> </p>
+<p>Source: <a href="https://github.com/Tim-Maes/Facet/" target="_blank" rel="noopener noreferrer">https://github.com/Tim-Maes/Facet/</a> </p>

-    <a target="_blank" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/Facet'>
+    <a target="_blank" rel="noopener noreferrer" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/Facet'>

-    <a target="_blank" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG'>
+    <a target="_blank" rel="noopener noreferrer" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG'>

Also applies to: 78-80, 86-88


9-9: Fix minor copy edits (brand casing, spacing, clarity).

-<p>Author :Tim Maes</p>
+<p>Author: Tim Maes</p>

-Nuget : <a href="https://www.nuget.org/packages/Facet/" target="_blank">https://www.nuget.org/packages/Facet/</a>
+NuGet: <a href="https://www.nuget.org/packages/Facet/" target="_blank" rel="noopener noreferrer">https://www.nuget.org/packages/Facet/</a>

-    Add reference to the  <a href="https://www.nuget.org/packages/Facet/" target="_blank">Facet</a> in the csproj
+    Add a reference to the <a href="https://www.nuget.org/packages/Facet/" target="_blank" rel="noopener noreferrer">Facet</a> package in the .csproj

Also applies to: 5-5, 21-22


23-74: Add alt text and lazy‑loading to images for a11y and performance.

Every should have descriptive alt and loading="lazy" (plus decoding="async").

-<img src="images/Facet/mapperDemo.csproj.png" width="580" height="580" />
+<img src="images/Facet/mapperDemo.csproj.png" width="580" height="580" alt="mapperDemo.csproj with Facet package reference" loading="lazy" decoding="async" />

-<img src="images/Facet/csFiles/Program.cs.png" width="580" height="580" />
+<img src="images/Facet/csFiles/Program.cs.png" width="580" height="580" alt="Program.cs source" loading="lazy" decoding="async" />

-<img src="images/Facet/csFiles/Person.cs.png" width="580" height="580" />
+<img src="images/Facet/csFiles/Person.cs.png" width="580" height="580" alt="Person.cs source" loading="lazy" decoding="async" />

-<img src="images/Facet/csFiles/PersonDto.cs.png" width="580" height="580" />
+<img src="images/Facet/csFiles/PersonDto.cs.png" width="580" height="580" alt="PersonDto.cs source" loading="lazy" decoding="async" />

-<img src="images/Facet/generated/PersonDTO.g.cs.png" width="580" height="580" />
+<img src="images/Facet/generated/PersonDTO.g.cs.png" width="580" height="580" alt="Generated file PersonDTO.g.cs" loading="lazy" decoding="async" />

-<img src="images/Facet/generated/Extensions.Generated.cs.png" width="580" height="580" />
+<img src="images/Facet/generated/Extensions.Generated.cs.png" width="580" height="580" alt="Generated file Extensions.Generated.cs" loading="lazy" decoding="async" />

-<img src="images/Facet/generated/LightweightObjectMapper.PreCodes.LightweightObjectMapperPreCodes.cs.png" width="580" height="580" />
+<img src="images/Facet/generated/LightweightObjectMapper.PreCodes.LightweightObjectMapperPreCodes.cs.png" width="580" height="580" alt="Generated LightweightObjectMapper pre-codes" loading="lazy" decoding="async" />

-<img src="images/Facet/generated/LightweightObjectMapper.PreCodes.PredefinedSpecialTypeMapping.cs.png" width="580" height="580" />
+<img src="images/Facet/generated/LightweightObjectMapper.PreCodes.PredefinedSpecialTypeMapping.cs.png" width="580" height="580" alt="Generated predefined special type mapping" loading="lazy" decoding="async" />

-<img src="images/Facet/generated/LOMMapExtensions_mapperDemo_Person.g.cs.png" width="580" height="580" />
+<img src="images/Facet/generated/LOMMapExtensions_mapperDemo_Person.g.cs.png" width="580" height="580" alt="Generated LOM map extensions for Person" loading="lazy" decoding="async" />

-<img src="images/Facet/generated/PredefinedSpecialTypeMapping.Generated.cs.png" width="580" height="580" />
+<img src="images/Facet/generated/PredefinedSpecialTypeMapping.Generated.cs.png" width="580" height="580" alt="Generated predefined special type mapping (final)" loading="lazy" decoding="async" />
v2/rscg_examples_site/docs/RSCG-Examples/index.md (1)

1056-1102: Mapper section updated (9 items) and Facet linked/diagrammed — OK.

Consider auto‑generating counts to avoid future drift, but not blocking.

Also applies to: 1798-1799

README.md (2)

47-49: Wrong category for mvvmgen entry.

mvvmgen is an MVVM library; listing it under the Serializer category is misleading.

Apply this diff:

-### 228. [mvvmgen](https://ignatandrei.github.io/RSCG_Examples/v2/docs/mvvmgen) , in the [Serializer](https://ignatandrei.github.io/RSCG_Examples/v2/docs/rscg-examples#serializer) category 
+### 228. [mvvmgen](https://ignatandrei.github.io/RSCG_Examples/v2/docs/mvvmgen) , in the [MVVM](https://ignatandrei.github.io/RSCG_Examples/v2/docs/rscg-examples#mvvm) category 

23-25: Consistency: Microsoft count phrase appears twice; keep one canonical location.

The “( including 14 from Microsoft )” repeats info from the header; consider keeping it only in the header for brevity.

v2/rscg_examples_site/docs/RSCG-Examples/Facet.md (5)

101-103: Double slash in GitHub doc links.

Docs links contain a double slash before docs; clean it to avoid redirects.

Apply this diff:

-- **[Documentation & Guides](https://github.com/Tim-Maes/Facet//docs/README.md)**
-- [What is being generated?](https://github.com/Tim-Maes/Facet//docs/07_WhatIsBeingGenerated.md)
+- **[Documentation & Guides](https://github.com/Tim-Maes/Facet/docs/README.md)**
+- [What is being generated?](https://github.com/Tim-Maes/Facet/docs/07_WhatIsBeingGenerated.md)

134-151: Missing fenced-code language on shell snippets.

Add bash for the dotnet commands to satisfy MD040 and enable syntax highlighting.

Apply this diff:

-```
+```bash
 dotnet add package Facet

For LINQ helpers:
- +bash
dotnet add package Facet.Extensions


For EF Core support:
-```
+```bash
dotnet add package Facet.Extensions.EFCore

For expression transformation utilities:
- +bash
dotnet add package Facet.Mapping.Expressions


278-281: Syntax error in attribute sample.

Missing closing parenthesis in [Facet(typeof(User))].

Apply this diff:

-[Facet(typeof(User)]
+[Facet(typeof(User))]
 public partial class UpdateUserDto { }

441-467: Hard tabs in XML snippet (MD010).

Replace tabs with spaces for consistency and to pass markdownlint.

Apply this diff (tabs → spaces):

-	<PropertyGroup>
-		<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
-		<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
-	</PropertyGroup>
+  <PropertyGroup>
+    <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
+    <CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
+  </PropertyGroup>
 
-	<ItemGroup>
-	  <PackageReference Include="Facet" Version="2.7.0" />
-	</ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="Facet" Version="2.7.0" />
+  </ItemGroup>

1096-1104: Bare URL and legacy “Twitter” label.

  • Replace bare URL with a markdown link.
  • Consider “X (Twitter)” or just “Share on X” if you want current naming.

Apply this diff:

-https://ignatandrei.github.io/RSCG_Examples/v2/docs/Facet
+[Facet page](https://ignatandrei.github.io/RSCG_Examples/v2/docs/Facet)
v2/rscg_examples/Facet/src/mapperDemo/Program.cs (1)

1-6: LGTM for minimal demo.

Code shows the generated constructor and a computed property; works as a concise smoke test.

Optional: use an object initializer to keep it on one line.

-var p=new Person();
-p.FirstName = "Andrei";
-p.LastName = "Ignat";
+var p = new Person { FirstName = "Andrei", LastName = "Ignat" };
v2/rscg_examples/Facet/src/mapperDemo/PersonDTO.cs (2)

1-1: File starts with a BOM character.

The leading BOM can cause diffs/noise in some tooling; consider saving as UTF‑8 without BOM.


7-12: Null-safety for FullName.

Concatenation is fine (nulls become empty), but interpolated formatting reads cleaner and avoids double spaces.

Apply this diff:

-    public string FullName { 
-        get
-        {
-            return FirstName + " " + LastName;
-        }
-    }
+    public string FullName =>
+        string.Join(' ', new[] { FirstName, LastName }.Where(s => !string.IsNullOrWhiteSpace(s)));
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c8dcfb1 and 4560520.

⛔ Files ignored due to path filters (3)
  • v2/Generator/all.csv is excluded by !**/*.csv
  • v2/rscg_examples_site/static/exports/RSCG.xlsx is excluded by !**/*.xlsx
  • v2/rscg_examples_site/static/sources/Facet.zip is excluded by !**/*.zip
📒 Files selected for processing (26)
  • README.md (3 hunks)
  • later.md (2 hunks)
  • v2/RSCGExamplesData/GeneratorDataRec.json (1 hunks)
  • v2/RSCGExamplesData/NoExample.json (0 hunks)
  • v2/book/examples/Facet.html (1 hunks)
  • v2/book/list.html (2 hunks)
  • v2/book/pandocHTML.yaml (1 hunks)
  • v2/rscg_examples/Facet/description.json (1 hunks)
  • v2/rscg_examples/Facet/nuget.txt (1 hunks)
  • v2/rscg_examples/Facet/readme.txt (1 hunks)
  • v2/rscg_examples/Facet/src/.tours/Facet.tour (1 hunks)
  • v2/rscg_examples/Facet/src/mapperDemo.sln (1 hunks)
  • v2/rscg_examples/Facet/src/mapperDemo/Person.cs (1 hunks)
  • v2/rscg_examples/Facet/src/mapperDemo/PersonDTO.cs (1 hunks)
  • v2/rscg_examples/Facet/src/mapperDemo/Program.cs (1 hunks)
  • v2/rscg_examples/Facet/src/mapperDemo/mapperDemo.csproj (1 hunks)
  • v2/rscg_examples/Facet/video.json (1 hunks)
  • v2/rscg_examples_site/docs/Categories/Mapper.md (1 hunks)
  • v2/rscg_examples_site/docs/Categories/_PrimitiveMapper.mdx (1 hunks)
  • v2/rscg_examples_site/docs/NoExamples.md (1 hunks)
  • v2/rscg_examples_site/docs/RSCG-Examples/Facet.md (1 hunks)
  • v2/rscg_examples_site/docs/RSCG-Examples/index.md (4 hunks)
  • v2/rscg_examples_site/docs/about.md (1 hunks)
  • v2/rscg_examples_site/docs/indexRSCG.md (2 hunks)
  • v2/rscg_examples_site/src/components/HomepageFeatures/index.js (1 hunks)
  • v2/rscg_examples_site/static/exports/RSCG.json (1 hunks)
💤 Files with no reviewable changes (1)
  • v2/RSCGExamplesData/NoExample.json
🧰 Additional context used
🧬 Code graph analysis (2)
v2/rscg_examples/Facet/src/mapperDemo/Program.cs (1)
v2/rscg_examples/Facet/src/mapperDemo/Person.cs (1)
  • Person (2-7)
v2/rscg_examples/Facet/src/mapperDemo/PersonDTO.cs (1)
v2/rscg_examples/Facet/src/mapperDemo/Person.cs (1)
  • Person (2-7)
🪛 Biome (2.1.2)
v2/rscg_examples/Facet/video.json

[error] 35-36: Property key must be double quoted

(parse)


[error] 36-36: unexpected character =

(parse)


[error] 36-36: expected , but instead found " "

Remove " "

(parse)


[error] 36-36: expected : but instead found }

Remove }

(parse)


[error] 37-38: Expected an array, an object, or a literal but instead found ']'.

Expected an array, an object, or a literal here.

(parse)

🪛 markdownlint-cli2 (0.17.2)
later.md

89-89: Bare URL used

(MD034, no-bare-urls)


95-95: Bare URL used

(MD034, no-bare-urls)


101-101: Bare URL used

(MD034, no-bare-urls)


107-107: Bare URL used

(MD034, no-bare-urls)


113-113: Bare URL used

(MD034, no-bare-urls)


119-119: Bare URL used

(MD034, no-bare-urls)


125-125: Bare URL used

(MD034, no-bare-urls)


131-131: Bare URL used

(MD034, no-bare-urls)

v2/rscg_examples_site/docs/NoExamples.md

357-357: Bare URL used

(MD034, no-bare-urls)


357-357: Bare URL used

(MD034, no-bare-urls)


361-361: Bare URL used

(MD034, no-bare-urls)


365-365: Bare URL used

(MD034, no-bare-urls)


369-369: Bare URL used

(MD034, no-bare-urls)


373-373: Bare URL used

(MD034, no-bare-urls)


377-377: Bare URL used

(MD034, no-bare-urls)


381-381: Bare URL used

(MD034, no-bare-urls)


385-385: Bare URL used

(MD034, no-bare-urls)


389-389: Bare URL used

(MD034, no-bare-urls)


393-393: Bare URL used

(MD034, no-bare-urls)


397-397: Bare URL used

(MD034, no-bare-urls)


401-401: Bare URL used

(MD034, no-bare-urls)


405-405: Bare URL used

(MD034, no-bare-urls)


409-409: Bare URL used

(MD034, no-bare-urls)


413-413: Bare URL used

(MD034, no-bare-urls)


417-417: Bare URL used

(MD034, no-bare-urls)


421-421: Bare URL used

(MD034, no-bare-urls)


425-425: Bare URL used

(MD034, no-bare-urls)


429-429: Bare URL used

(MD034, no-bare-urls)


433-433: Bare URL used

(MD034, no-bare-urls)


437-437: Bare URL used

(MD034, no-bare-urls)


441-441: Bare URL used

(MD034, no-bare-urls)


445-445: Bare URL used

(MD034, no-bare-urls)


449-449: Bare URL used

(MD034, no-bare-urls)


453-453: Bare URL used

(MD034, no-bare-urls)


457-457: Bare URL used

(MD034, no-bare-urls)


461-461: Bare URL used

(MD034, no-bare-urls)


465-465: Bare URL used

(MD034, no-bare-urls)


469-469: Bare URL used

(MD034, no-bare-urls)


473-473: Bare URL used

(MD034, no-bare-urls)


477-477: Bare URL used

(MD034, no-bare-urls)


481-481: Bare URL used

(MD034, no-bare-urls)


485-485: Bare URL used

(MD034, no-bare-urls)


489-489: Bare URL used

(MD034, no-bare-urls)


493-493: Bare URL used

(MD034, no-bare-urls)


497-497: Bare URL used

(MD034, no-bare-urls)


501-501: Bare URL used

(MD034, no-bare-urls)


505-505: Bare URL used

(MD034, no-bare-urls)


509-509: Bare URL used

(MD034, no-bare-urls)


513-513: Bare URL used

(MD034, no-bare-urls)


517-517: Bare URL used

(MD034, no-bare-urls)


521-521: Bare URL used

(MD034, no-bare-urls)


525-525: Bare URL used

(MD034, no-bare-urls)


529-529: Bare URL used

(MD034, no-bare-urls)


533-533: Bare URL used

(MD034, no-bare-urls)


537-537: Bare URL used

(MD034, no-bare-urls)


541-541: Bare URL used

(MD034, no-bare-urls)


545-545: Bare URL used

(MD034, no-bare-urls)


549-549: Bare URL used

(MD034, no-bare-urls)


553-553: Bare URL used

(MD034, no-bare-urls)


557-557: Bare URL used

(MD034, no-bare-urls)


561-561: Bare URL used

(MD034, no-bare-urls)


565-565: Bare URL used

(MD034, no-bare-urls)


569-569: Bare URL used

(MD034, no-bare-urls)


573-573: Bare URL used

(MD034, no-bare-urls)


577-577: Bare URL used

(MD034, no-bare-urls)


581-581: Bare URL used

(MD034, no-bare-urls)


585-585: Bare URL used

(MD034, no-bare-urls)


589-589: Bare URL used

(MD034, no-bare-urls)


593-593: Bare URL used

(MD034, no-bare-urls)


597-597: Bare URL used

(MD034, no-bare-urls)


601-601: Bare URL used

(MD034, no-bare-urls)


605-605: Bare URL used

(MD034, no-bare-urls)


609-609: Bare URL used

(MD034, no-bare-urls)


613-613: Bare URL used

(MD034, no-bare-urls)


617-617: Bare URL used

(MD034, no-bare-urls)


621-621: Bare URL used

(MD034, no-bare-urls)


625-625: Bare URL used

(MD034, no-bare-urls)


629-629: Bare URL used

(MD034, no-bare-urls)


633-633: Bare URL used

(MD034, no-bare-urls)


637-637: Bare URL used

(MD034, no-bare-urls)


641-641: Bare URL used

(MD034, no-bare-urls)


645-645: Bare URL used

(MD034, no-bare-urls)


649-649: Bare URL used

(MD034, no-bare-urls)


653-653: Bare URL used

(MD034, no-bare-urls)


657-657: Bare URL used

(MD034, no-bare-urls)


661-661: Bare URL used

(MD034, no-bare-urls)


665-665: Bare URL used

(MD034, no-bare-urls)


669-669: Bare URL used

(MD034, no-bare-urls)


673-673: Bare URL used

(MD034, no-bare-urls)


677-677: Bare URL used

(MD034, no-bare-urls)


681-681: Bare URL used

(MD034, no-bare-urls)


685-685: Bare URL used

(MD034, no-bare-urls)


689-689: Bare URL used

(MD034, no-bare-urls)


693-693: Bare URL used

(MD034, no-bare-urls)


697-697: Bare URL used

(MD034, no-bare-urls)


701-701: Bare URL used

(MD034, no-bare-urls)


705-705: Bare URL used

(MD034, no-bare-urls)

v2/rscg_examples_site/docs/indexRSCG.md

23-23: Spaces inside link text

(MD039, no-space-in-links)

README.md

5498-5498: Bare URL used

(MD034, no-bare-urls)


5502-5502: Bare URL used

(MD034, no-bare-urls)


5505-5505: Bare URL used

(MD034, no-bare-urls)


5509-5509: Bare URL used

(MD034, no-bare-urls)


5512-5512: Bare URL used

(MD034, no-bare-urls)


5516-5516: Bare URL used

(MD034, no-bare-urls)


5519-5519: Bare URL used

(MD034, no-bare-urls)


5523-5523: Bare URL used

(MD034, no-bare-urls)


5526-5526: Bare URL used

(MD034, no-bare-urls)


5530-5530: Bare URL used

(MD034, no-bare-urls)


5533-5533: Bare URL used

(MD034, no-bare-urls)


5537-5537: Bare URL used

(MD034, no-bare-urls)


5540-5540: Bare URL used

(MD034, no-bare-urls)


5544-5544: Bare URL used

(MD034, no-bare-urls)


5547-5547: Bare URL used

(MD034, no-bare-urls)


5551-5551: Bare URL used

(MD034, no-bare-urls)


5554-5554: Bare URL used

(MD034, no-bare-urls)


5558-5558: Bare URL used

(MD034, no-bare-urls)


5561-5561: Bare URL used

(MD034, no-bare-urls)


5565-5565: Bare URL used

(MD034, no-bare-urls)


5568-5568: Bare URL used

(MD034, no-bare-urls)


5572-5572: Bare URL used

(MD034, no-bare-urls)


5575-5575: Bare URL used

(MD034, no-bare-urls)


5579-5579: Bare URL used

(MD034, no-bare-urls)


5582-5582: Bare URL used

(MD034, no-bare-urls)


5586-5586: Bare URL used

(MD034, no-bare-urls)


5589-5589: Bare URL used

(MD034, no-bare-urls)


5593-5593: Bare URL used

(MD034, no-bare-urls)


5596-5596: Bare URL used

(MD034, no-bare-urls)


5600-5600: Bare URL used

(MD034, no-bare-urls)


5603-5603: Bare URL used

(MD034, no-bare-urls)


5607-5607: Bare URL used

(MD034, no-bare-urls)


5610-5610: Bare URL used

(MD034, no-bare-urls)


5614-5614: Bare URL used

(MD034, no-bare-urls)


5617-5617: Bare URL used

(MD034, no-bare-urls)


5621-5621: Bare URL used

(MD034, no-bare-urls)


5624-5624: Bare URL used

(MD034, no-bare-urls)


5628-5628: Bare URL used

(MD034, no-bare-urls)


5631-5631: Bare URL used

(MD034, no-bare-urls)


5635-5635: Bare URL used

(MD034, no-bare-urls)


5638-5638: Bare URL used

(MD034, no-bare-urls)


5642-5642: Bare URL used

(MD034, no-bare-urls)


5645-5645: Bare URL used

(MD034, no-bare-urls)


5649-5649: Bare URL used

(MD034, no-bare-urls)


5652-5652: Bare URL used

(MD034, no-bare-urls)


5656-5656: Bare URL used

(MD034, no-bare-urls)


5659-5659: Bare URL used

(MD034, no-bare-urls)


5663-5663: Bare URL used

(MD034, no-bare-urls)


5666-5666: Bare URL used

(MD034, no-bare-urls)

v2/rscg_examples_site/docs/RSCG-Examples/Facet.md

34-34: Bare URL used

(MD034, no-bare-urls)


37-37: Bare URL used

(MD034, no-bare-urls)


39-39: Bare URL used

(MD034, no-bare-urls)


134-134: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


139-139: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


144-144: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


149-149: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


454-454: Hard tabs
Column: 1

(MD010, no-hard-tabs)


455-455: Hard tabs
Column: 1

(MD010, no-hard-tabs)


456-456: Hard tabs
Column: 1

(MD010, no-hard-tabs)


457-457: Hard tabs
Column: 1

(MD010, no-hard-tabs)


459-459: Hard tabs
Column: 1

(MD010, no-hard-tabs)


460-460: Hard tabs
Column: 1

(MD010, no-hard-tabs)


461-461: Hard tabs
Column: 1

(MD010, no-hard-tabs)


463-463: Hard tabs
Column: 1

(MD010, no-hard-tabs)


464-464: Hard tabs
Column: 1

(MD010, no-hard-tabs)


465-465: Hard tabs
Column: 1

(MD010, no-hard-tabs)


552-552: Code block style
Expected: fenced; Actual: indented

(MD046, code-block-style)


591-591: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


635-635: No space after hash on atx style heading

(MD018, no-missing-space-atx)


647-647: Code block style
Expected: fenced; Actual: indented

(MD046, code-block-style)


833-833: No space after hash on atx style heading

(MD018, no-missing-space-atx)


835-835: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


947-947: Code block style
Expected: fenced; Actual: indented

(MD046, code-block-style)


963-963: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


1089-1089: Spaces inside link text

(MD039, no-space-in-links)


1103-1103: Bare URL used

(MD034, no-bare-urls)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: call-workflow-passing-data / build (24.3.0)
🔇 Additional comments (18)
v2/rscg_examples_site/docs/about.md (1)

9-9: Count verified: 229 — no action required.
jq reports 229 entries and v2/rscg_examples_site/docs/about.md contains "of 229 Roslyn Source Code Generator (RSCG)".

v2/rscg_examples_site/docs/Categories/Mapper.md (1)

3-21: Facet route confirmed (slug present).
Found "slug: /Facet" in v2/rscg_examples_site/docs/RSCG-Examples/Facet.md (line 5).

v2/RSCGExamplesData/GeneratorDataRec.json (1)

1380-1386: Facet exported 8× — confirm uniqueness and dedupe if unintended.
v2/RSCGExamplesData/GeneratorDataRec.json:1382 (source entry).
v2/rscg_examples_site/static/exports/RSCG.json — 8 records with Name == "Facet".
Action: remove/merge duplicate source entries or adjust exporter to emit a single Facet; if duplicates are intentional, document the reason in the code/export.

v2/rscg_examples_site/docs/Categories/_PrimitiveMapper.mdx (1)

9-19: LGTM — Facet correctly added and ordering updated

Looks consistent. Please ensure Mapper.md reflects the same order.

v2/rscg_examples_site/docs/indexRSCG.md (1)

10-13: Count bump to 229 — OK

Header and intro text align with the new entry.

v2/rscg_examples/Facet/src/mapperDemo/Person.cs (1)

2-7: LGTM

Simple POCO is fine for the demo.

v2/book/list.html (3)

20-21: List count and row addition look correct.

Also applies to: 941-944


949-951: Add rel to external link opened in new tab.
[raise_nitpick_refactor]

-    <a target="_blank" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG'>
+    <a target="_blank" rel="noopener noreferrer" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG'>

20-21: Sanity‑check: header total matches table rows — verified.
v2/book/list.html has 229 data rows (counted via pairs), which matches the header value 229.

v2/book/pandocHTML.yaml (1)

245-245: Facet added to input-files — good.

No issues; resource paths already include examples/images, so screenshots will resolve.

v2/rscg_examples_site/static/exports/RSCG.json (2)

1829-1836: Facet entry looks consistent (name, links, category, date).


1829-1836: Facet entry present and unique — verification passed.
jq returned length 1 and printed the Facet record (AddedOn: 2025-08-17T00:00:00).

v2/rscg_examples_site/docs/RSCG-Examples/index.md (2)

3-4: Counts updated to 229 — OK.


1056-1102: Verified: declared Mapper count equals the number of links (9). Counted 9 markdown links in the Mapper block; matches expected 9.

v2/rscg_examples/Facet/src/mapperDemo/PersonDTO.cs (1)

5-6: Verified — Person is declared in the global namespace; no change required.
v2/rscg_examples/Facet/src/mapperDemo/Person.cs contains "public partial class Person" with no namespace declaration, so [Facet(typeof(Person))] resolving to global::Person is correct.

v2/rscg_examples_site/docs/RSCG-Examples/Facet.md (2)

10-10: Incorrect suggested replacement — _Mapper.mdx not present

v2/rscg_examples_site/docs/Categories/_PrimitiveMapper.mdx exists; v2/rscg_examples_site/docs/Categories/_Mapper.mdx is missing. Keep the current import in v2/rscg_examples_site/docs/RSCG-Examples/Facet.md:10 or add/rename the intended _Mapper.mdx.

Likely an incorrect or invalid review comment.


107-115: Marketing bullets: confirmed for Facet v2.7.0+.

Verified — CRUD DTO generation via [GenerateDtos], expression transforms (Facet.Mapping.Expressions), DI-based async mapping (Facet.Mapping), and EF Core async helpers (Facet.Extensions / Facet.Extensions.EFCore) are present in v2.7.0+ (NuGet/libraries.io sources).

README.md (1)

5498-5666: Fix markdownlint MD034/MD046/MD040 in the "Contributors Welcome" section

Convert bare URLs to autolinks (https://...) or markdown links and ensure fenced code blocks include a language. The earlier auto-fix failed because gawk's inplace option wasn't available — run the corrected script below locally and re-run lint.

#!/bin/bash
# 1) Wrap bare URLs in angle brackets in the Contributors section
start=$(rg -n --fixed-strings '## Contributors Welcome for those' README.md | head -n1 | cut -d: -f1)
end=$(rg -n --fixed-strings '## Do not want to test' README.md | head -n1 | cut -d: -f1)
sed -n "1,${start}p" README.md > /tmp/README.head.md
sed -n "$((start+1)),$((end-1))p" README.md | \
  sed -E 's#(^|[^<\[](https?://[^\s)]+)#\1<\2>#g' > /tmp/README.contrib.md
sed -n "${end},\$p" README.md > /tmp/README.tail.md
cat /tmp/README.head.md /tmp/README.contrib.md /tmp/README.tail.md > README.md

# 2) Add `bash` language to fenced code blocks that currently lack a language
awk 'BEGIN{in=0} /^\s*```$/{ if(in==0){ print "```bash"; in=1 } else { print "```"; in=0 } next } { print }' README.md > /tmp/README.tmp && mv /tmp/README.tmp README.md

Comment on lines +40 to +49
I have <b>coded</b> the file PersonDto.cs
<br />
<img src="images/Facet/csFiles/PersonDto.cs.png" width="580" height="580" />
<hr />
<h3>And here are the <i>generated</i> files</h3>

<br />
The file <i>generated</i> is PersonDTO.g.cs
<br />
<img src="images/Facet/generated/PersonDTO.g.cs.png" width="580" height="580" />
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

🧩 Analysis chain

Verify DTO file name casing consistency (PersonDto vs PersonDTO).

Screenshots and generated files mix PersonDto.cs and PersonDTO.g.cs. Ensure filenames and case match the actual repo assets and image paths on case‑sensitive hosts.


🏁 Script executed:

#!/bin/bash
# Check for mixed casing across repo and images for PersonDto/PersonDTO
rg -nP 'PersonD(TO|to)\b' -C2
fd -e png -I | rg -nP 'PersonD(TO|to)'

Length of output: 293575


Fix filename-casing inconsistency: PersonDto vs PersonDTO

Docs/metadata reference PersonDto.cs while source/generated files use PersonDTO(.g).cs — on case‑sensitive hosts this will break images/links. Pick one casing (recommend PersonDTO) and make it consistent: rename files or update doc/image paths and description.json.

Locations:

  • v2/book/examples/Facet.html (lines 40–49) — images/Facet/csFiles/PersonDto.cs.png vs images/Facet/generated/PersonDTO.g.cs.png
  • v2/rscg_examples/Facet/description.json — lists "PersonDto.cs"
  • v2/rscg_examples/Facet/src/mapperDemo/PersonDTO.cs (actual source)


| No | Name | Date | Category |
| --------- | ----- | ---- | -------- |
|229| [Facet by Tim Maes ](/docs/Facet)|2025-08-17 => 17 August 2025 | [Mapper](/docs/Categories/Mapper) |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

🧩 Analysis chain

Remove trailing space inside link text (MD039)

Markdownlint flags the space before ] in “Facet by Tim Maes ”.

Apply this diff:

-|229| [Facet by Tim Maes ](/docs/Facet)|2025-08-17 => 17 August 2025 | [Mapper](/docs/Categories/Mapper) |
+|229| [Facet by Tim Maes](/docs/Facet)|2025-08-17 => 17 August 2025 | [Mapper](/docs/Categories/Mapper) |

Check for other instances:


🏁 Script executed:

#!/bin/bash
rg -nP '\[[^]\n]+ \]' v2/rscg_examples_site/docs/indexRSCG.md

Length of output: 35478


Remove trailing space inside link text (MD039) across v2/rscg_examples_site/docs/indexRSCG.md

rg found multiple occurrences; remove the space before ] in each markdown link and apply the same change everywhere.

-|229| [Facet by Tim Maes ](/docs/Facet)|2025-08-17 => 17 August 2025 | [Mapper](/docs/Categories/Mapper) |
+|229| [Facet by Tim Maes](/docs/Facet)|2025-08-17 => 17 August 2025 | [Mapper](/docs/Categories/Mapper) |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
|229| [Facet by Tim Maes ](/docs/Facet)|2025-08-17 => 17 August 2025 | [Mapper](/docs/Categories/Mapper) |
|229| [Facet by Tim Maes](/docs/Facet)|2025-08-17 => 17 August 2025 | [Mapper](/docs/Categories/Mapper) |
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

23-23: Spaces inside link text

(MD039, no-space-in-links)

🤖 Prompt for AI Agents
In v2/rscg_examples_site/docs/indexRSCG.md around line 23, several markdown
links contain a trailing space before the closing bracket (e.g. "[Facet by Tim
Maes ]"); remove the space so the link text becomes "[Facet by Tim Maes]".
Search the whole file for other occurrences of " ](" or " ]" inside link text
and remove the extra space before each closing bracket to fix MD039 consistently
across the file.

"data":{
"goodFor":["Custom generation and mapper"],
"csprojDemo":"mapperDemo.csproj",
"csFiles":["Program.cs","Person.cs","PersonDto.cs"],
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

🧩 Analysis chain

Fix filename case: PersonDTO.cs vs PersonDto.cs

The repo adds PersonDTO.cs (upper DTO). This mismatch will break on case‑sensitive filesystems and in tooling that relies on this manifest.

Apply this diff:

-      "csFiles":["Program.cs","Person.cs","PersonDto.cs"],
+      "csFiles":["Program.cs","Person.cs","PersonDTO.cs"],

Run to verify filenames:


🏁 Script executed:

#!/bin/bash
fd -a -i 'PersonDto.cs' v2/rscg_examples/Facet || true
fd -a -i 'PersonDTO.cs' v2/rscg_examples/Facet

Length of output: 139


Fix filename case: PersonDTO.cs vs PersonDto.cs

description.json lists "PersonDto.cs" but the actual file is v2/rscg_examples/Facet/src/mapperDemo/PersonDTO.cs — update the manifest to match the real filename.

File: v2/rscg_examples/Facet/description.json (line 14)

-      "csFiles":["Program.cs","Person.cs","PersonDto.cs"],
+      "csFiles":["Program.cs","Person.cs","PersonDTO.cs"],
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"csFiles":["Program.cs","Person.cs","PersonDto.cs"],
"csFiles":["Program.cs","Person.cs","PersonDTO.cs"],
🤖 Prompt for AI Agents
In v2/rscg_examples/Facet/description.json around line 14, the csFiles entry
lists "PersonDto.cs" but the actual file in the repo is named "PersonDTO.cs";
update the manifest entry to "PersonDTO.cs" so the filename casing matches the
real file path (v2/rscg_examples/Facet/src/mapperDemo/PersonDTO.cs) and commit
the corrected description.json.

Comment on lines +32 to +60
,{
"file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/PredefinedSpecialTypeMapping.Generated.cs",
"description": "Generated File 6 from 6 : PredefinedSpecialTypeMapping.Generated.cs ",
"line": 1
}

,{
"file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/LOMMapExtensions_mapperDemo_Person.g.cs",
"description": "Generated File 5 from 6 : LOMMapExtensions_mapperDemo_Person.g.cs ",
"line": 1
}

,{
"file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/LightweightObjectMapper.PreCodes.PredefinedSpecialTypeMapping.cs",
"description": "Generated File 4 from 6 : LightweightObjectMapper.PreCodes.PredefinedSpecialTypeMapping.cs ",
"line": 1
}

,{
"file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/LightweightObjectMapper.PreCodes.LightweightObjectMapperPreCodes.cs",
"description": "Generated File 3 from 6 : LightweightObjectMapper.PreCodes.LightweightObjectMapperPreCodes.cs ",
"line": 1
}

,{
"file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/Extensions.Generated.cs",
"description": "Generated File 2 from 6 : Extensions.Generated.cs ",
"line": 1
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Remove unrelated LightweightObjectMapper steps

These point to LOM artifacts and will mislead users in the Facet tour.

Apply this diff to drop them:

-        ,{
-        "file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/PredefinedSpecialTypeMapping.Generated.cs",
-        "description": "Generated File 6  from 6 : PredefinedSpecialTypeMapping.Generated.cs ",
-        "line": 1
-        }
-
-        ,{
-        "file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/LOMMapExtensions_mapperDemo_Person.g.cs",
-        "description": "Generated File 5  from 6 : LOMMapExtensions_mapperDemo_Person.g.cs ",
-        "line": 1
-        }
-
-        ,{
-        "file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/LightweightObjectMapper.PreCodes.PredefinedSpecialTypeMapping.cs",
-        "description": "Generated File 4  from 6 : LightweightObjectMapper.PreCodes.PredefinedSpecialTypeMapping.cs ",
-        "line": 1
-        }
-
-        ,{
-        "file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/LightweightObjectMapper.PreCodes.LightweightObjectMapperPreCodes.cs",
-        "description": "Generated File 3  from 6 : LightweightObjectMapper.PreCodes.LightweightObjectMapperPreCodes.cs ",
-        "line": 1
-        }
-
-        ,{
-        "file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/Extensions.Generated.cs",
-        "description": "Generated File 2  from 6 : Extensions.Generated.cs ",
-        "line": 1
-        }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
,{
"file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/PredefinedSpecialTypeMapping.Generated.cs",
"description": "Generated File 6 from 6 : PredefinedSpecialTypeMapping.Generated.cs ",
"line": 1
}
,{
"file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/LOMMapExtensions_mapperDemo_Person.g.cs",
"description": "Generated File 5 from 6 : LOMMapExtensions_mapperDemo_Person.g.cs ",
"line": 1
}
,{
"file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/LightweightObjectMapper.PreCodes.PredefinedSpecialTypeMapping.cs",
"description": "Generated File 4 from 6 : LightweightObjectMapper.PreCodes.PredefinedSpecialTypeMapping.cs ",
"line": 1
}
,{
"file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/LightweightObjectMapper.PreCodes.LightweightObjectMapperPreCodes.cs",
"description": "Generated File 3 from 6 : LightweightObjectMapper.PreCodes.LightweightObjectMapperPreCodes.cs ",
"line": 1
}
,{
"file": "mapperDemo/obj/GX/LightweightObjectMapper/LightweightObjectMapper.LightweightObjectMapperSourceGenerator/Extensions.Generated.cs",
"description": "Generated File 2 from 6 : Extensions.Generated.cs ",
"line": 1
}
🤖 Prompt for AI Agents
In v2/rscg_examples/Facet/src/.tours/Facet.tour around lines 32 to 60, the tour
includes unrelated LightweightObjectMapper entries that will confuse users;
remove the entire objects for the six LOM-generated files shown (the
mapperDemo/obj/... entries) from the tour JSON array, ensuring you delete their
comma-separated blocks and then fix punctuation so the remaining array items
have correct commas and valid JSON/JS formatting; save the file with the updated
list so only Facet-relevant steps remain.

Comment on lines +15 to +17
<ItemGroup>
<PackageReference Include="Facet" Version="2.7.0" />
</ItemGroup>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

🧩 Analysis chain

Source generators should be PrivateAssets=all to avoid leaking transitively.

-  <PackageReference Include="Facet" Version="2.7.0" />
+  <PackageReference Include="Facet" Version="2.7.0">
+    <PrivateAssets>all</PrivateAssets>
+    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+  </PackageReference>

🌐 Web query:

What is the latest stable version of the "Facet" NuGet package?

💡 Result:

Latest stable version: 2.6.0 (checked September 16, 2025). [1]

Sources
[1] NuGet package page — Facet 2.6.0.


Make Facet PackageReference PrivateAssets=all and correct package version

Facet should be PrivateAssets=all to avoid leaking; the project references Version="2.7.0" but NuGet's latest stable is 2.6.0 (checked September 16, 2025) — change to 2.6.0 or confirm a private/pre-release source.

File: v2/rscg_examples/Facet/src/mapperDemo/mapperDemo.csproj Lines: 15-17

-  <PackageReference Include="Facet" Version="2.7.0" />
+  <PackageReference Include="Facet" Version="2.6.0">
+    <PrivateAssets>all</PrivateAssets>
+    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+  </PackageReference>

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In v2/rscg_examples/Facet/src/mapperDemo/mapperDemo.csproj around lines 15-17,
the PackageReference for Facet must not be exposed transitively and the version
is incorrect; change the PackageReference to include PrivateAssets="all" and
update Version="2.7.0" to the stable NuGet version Version="2.6.0" (or, if you
intentionally depend on a private/pre-release 2.7.0, confirm and document the
private feed source instead of pushing a public transitive reference). Ensure
the attribute is added to the existing PackageReference element and the version
string adjusted accordingly.

Comment on lines +35 to +36
{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Facet#download-example-net--c-",
SpeakTest=" "},
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Invalid JSON: stray property syntax breaks parsing

SpeakTest=" " is not valid JSON and causes the file to fail parse.

Apply this diff:

-{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Facet#download-example-net--c-",
-SpeakTest=" "},
+{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Facet#download-example-net--c-"},
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Facet#download-example-net--c-",
SpeakTest=" "},
{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Facet#download-example-net--c-"},
🧰 Tools
🪛 Biome (2.1.2)

[error] 35-36: Property key must be double quoted

(parse)


[error] 36-36: unexpected character =

(parse)


[error] 36-36: expected , but instead found " "

Remove " "

(parse)


[error] 36-36: expected : but instead found }

Remove }

(parse)

🤖 Prompt for AI Agents
In v2/rscg_examples/Facet/video.json around lines 35 to 36, the JSON contains an
invalid property syntax `SpeakTest=" "` which breaks parsing; replace it with a
valid JSON key/value pair (e.g., "SpeakTest": " " or remove the property if
unused) so the object conforms to JSON syntax and the file can be parsed.

@ignatandrei ignatandrei merged commit 77738ab into main Sep 16, 2025
3 checks passed
@ignatandrei ignatandrei deleted the Facet branch September 16, 2025 16:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants